MovementFlags = {
	Forward,
	Backward,
	StrafeLeft,
	StrafeRight,
	TurnLeft,
	TurnRight,
	PitchUp,
	PitchDown,
	Walking,
	Immobilized,
	Falling,
	FallingFar,
	Swimming,
	Ascending,
	Descending,
	Flying,
};

Slots = {
	Head,
	Shoulders,
	Shirt,
	Chest,
	Waist,
	Legs,
	Feet,
	Wrists,
	Hands,
	Back,
	MainHand,
	OffHand,
	Tabard,
};

AppearanceTypes = {
	Skin,
	Face,
	Hair,
	HairColor,
	Misc,
};

Sexes = {
	Male,
	Female,
	Unknown,
};

--- Get a movement field in a unit.
-- @param Unit The unit.
-- @param Offset The offset of the movement field.
-- @param Type The type of the movement field. It must be a member of Type.
-- @return The value of the movement field.
function UnitMovementField (Unit, Offset, Type) end

--- Get a unit's movement flags.
-- @param Unit The unit.
-- @return The unit's movement flags.
function UnitMovementFlags (Unit) end

--- Get a unit's bounding radius.
-- @param Unit The unit.
-- @return The unit's bounding radius.
function UnitBoundingRadius (Unit) end

--- Get a unit's combat reach.
-- @param Unit The unit.
-- @return The unit's combat reach.
function UnitCombatReach (Unit) end

--- Get a unit's target.
-- @param Unit The unit.
-- @return The unit's target, or nil if there is none.
function UnitTarget (Unit) end

--- Get a unit's creator.
-- @param Unit The unit.
-- @return The unit's creator, or nil if there is none.
function UnitCreator (Unit) end

--- Update a unit's model.
-- @param Unit The unit.
function UnitUpdateModel (Unit) end

--- Get a unit's display ID.
-- @param Unit The unit.
-- @return The unit's display ID.
function UnitGetDisplayID (Unit) end

--- Set a unit's display ID. UnitUpdateModel will need to be called after for the change to be displayed.
-- @param Unit The unit.
-- @param DisplayID The unit's new display ID.
function UnitSetDisplayID (Unit, DisplayID) end

--- Reset a unit's model. UnitUpdateModel will need to be called after for the change to be displayed.
-- @param Unit The unit.
function UnitReset (Unit) end

--- Get a unit's sex.
-- @param Unit The unit.
-- @return The unit's sex.
function UnitGetSex () end

--- Get a unit's item.
-- @param Unit The unit.
-- @param SlotID The slot ID.
-- @return The item ID of the item in the slot.
function UnitGetItem (Unit, SlotID) end

--- Set a unit's item.
-- @param Unit The unit.
-- @param SlotID The slot ID.
-- @param ItemID The item ID.
function UnitSetItem (Unit, SlotID, ItemID) end

--- Get a unit's mount's display ID.
-- @param Unit The unit.
-- @return the unit's mount's display ID.
function UnitGetMountDisplayID (Unit) end

--- Set a unit's mount's display ID.
-- @param Unit The unit.
-- @param DisplayID The display ID.
function UnitSetMountDisplayID (Unit, DisplayID) end
	
--- Get a unit's appearance.
-- @param Unit The unit.
-- @param AppearanceType The appearance type to get.
-- @return The ID.
function UnitGetAppearance (Unit, AppearanceType) end
	
--- Set a unit's appearance.
-- @param Unit The unit.
-- @param AppearanceType The appearance type to set.
-- @param ID The ID.
function UnitSetAppearance (Unit, AppearanceType, ID) end

--- Get whether a unit can be looted.
-- @param Unit The unit.
-- @return Whether the unit can be looted.
function UnitCanBeLooted (Unit) end

--- Get whether a unit can be skinned.
-- @param Unit The unit.
-- @return Whether the unit can be skinned.
function UnitCanBeSkinned (Unit) end